
#ifndef _MEMBER_BPICKER_H_
#define _MEMBER_BPICKER_H_

#include <BSet>
#include <BMesh>
#include <BGeometry>
#include <BSphere>
#include <BSurface>
#include <BCylinder>
#include <BGeoSphere>

#include <BNode>
#include <BPickItem>
#include <BPicker>
#include "member_BScene.h"
#include "member_BNode.h"
#include "member_BMesh.h"
#include "member_BGeometry.h"
#include "member_BTerrain.h"
#include "member_BSurface.h"

#define picker_member(picker)	((member_BPicker*)((BPicker*)picker)->_ptr)

namespace BWE
{
	class member_BPicker
	{
	public:
		member_BPicker(BPicker* picker);
		~member_BPicker();

		void enter(const BLine& line, BGroup* group);
		void enter(const BLine& line, BNode* node);
		void enter(const BLine& line, BShape* shape);

		BPicker*				boss;
		BLine					line;
		int						hitNum;
		BGroup*					group;
		BNode*					node;
		BShape*					shape;
		BSet<const BObject*>	exclusions;
		BArray<BPickItemHolder>	hitItems;

		SceneOctTreeItemArray	sceneOctItems;
		ShapeOctTreeItemArray	shapeOctItems;
		FaceOctTreeItemArray	faceOctItems;
		PolyOctTreeItemArray	polyOctItems;
		QuadTreeItemArray		quadItems;
	};
}

#endif